package com.gxa.employment.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.gxa.employment.entity.dto.EntStaDto;
import com.gxa.employment.entity.vo.EntStaffJobVo;
import com.gxa.employment.entity.vo.EnterpriseEmploymentVo;
import com.gxa.employment.entity.vo.PageVo;
import com.gxa.employment.mapper.EntStaffJobMapper;
import com.gxa.employment.service.EntStaffJobService;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * <p>
 * VIEW 服务实现类
 * </p>
 *
 * @author author
 * @since 2025-03-26
 */
@Service
public class EntStaffJobServiceImpl extends ServiceImpl<EntStaffJobMapper, EntStaffJobVo> implements EntStaffJobService {

    @Override
    public PageVo<EntStaffJobVo> selectEntSta(EntStaDto entStaDto) {
        // 创建LambdaQueryWrapper对象
        LambdaQueryWrapper<EntStaffJobVo> queryWrapper = Wrappers.lambdaQuery(EntStaffJobVo.class);
        // 根据条件构建查询语句
        queryWrapper.like(StringUtils.isNotEmpty(entStaDto.getEntName()),EntStaffJobVo::getEntName,entStaDto.getEntName()) // 如果entStaDto的EntName不为空，则按EntName进行查询
                .like(StringUtils.isNotEmpty(entStaDto.getJobTitle()),EntStaffJobVo::getJobTitle, entStaDto.getJobTitle()) // 如果entStaDto的JobTitle不为空，则按JobTitle进行查询
                .like(StringUtils.isNotEmpty(entStaDto.getStaffName()),EntStaffJobVo::getStaffName, entStaDto.getStaffName()) // 如果entStaDto的StaffName不为空，则按StaffName进行查询
                .orderByDesc(EntStaffJobVo::getCreated); // 按创建时间降序排序

        // 创建分页对象，设置页码和页面大小
        IPage<EntStaffJobVo> employmentVoPage = new Page<>(entStaDto.getPage(),entStaDto.getSize());
        // 执行分页查询
        this.page(employmentVoPage,queryWrapper);

        // 获取总记录数
        long total = employmentVoPage.getTotal();
        // 获取当前页的记录列表
        List<EntStaffJobVo> records = employmentVoPage.getRecords();

        // 返回分页结果对象
        return new PageVo<>(total,records);
    }

}
